from distutils.core import setup
from distutils.command.install import INSTALL_SCHEMES
import os
import sys

def fullsplit(path, result=None):
    """
    Split a pathname into components (the opposite of os.path.join) in a
    platform-neutral way.
    """
    if result is None:
        result = []
    head, tail = os.path.split(path)
    if head == '':
        return [tail] + result
    if head == path:
        return result
    return fullsplit(head, [tail] + result)

# Tell distutils to put the data_files in platform-specific installation
# locations. See here for an explanation:
# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb
for scheme in INSTALL_SCHEMES.values():
    scheme['data'] = scheme['purelib']

# Compile the list of packages available, because distutils doesn't have
# an easy way to do this.
packages, data_files = [], []
root_dir = os.path.dirname(__file__)
if root_dir != '':
    os.chdir(root_dir)
    
for dirpath, dirnames, filenames in os.walk("orbison"):
    # Ignore dirnames that start with '.'
    for i, dirname in enumerate(dirnames):
        if dirname.startswith('.'): del dirnames[i]
    
    # Ignore ".DS_Store" files (Mac platform)
    for j, filename in enumerate(filenames):   
        if filename.startswith('.'): del filenames[j]  
        
    if '__init__.py' in filenames:
        packages.append('.'.join(fullsplit(dirpath)))
    elif filenames:
        data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]])

setup(
    name = "Orbison",
    version = "1.1",
    url = 'http://orbison.googlecode.com/',
    author = 'Google',
    author_email = 'jason@jrandolph.com',
    description = 'A low-cost ambient information hardware device controlled by your computer.',
    packages = packages,
    data_files = data_files,
    license = "Apache Software License v2",
    long_description = """Orbison uses Python to talk to an Arduino circuit board, which then
controls 3 high power LEDs.

Use Orbison to display any RGB (red, green, blue) color combination. Write your 
own script to monitor online information and use the Orbison library to update 
the device with a color symbolizing that information. Typically, Orbison is 
used to track a software development project's continuous build status. Green 
means "all good", and Red means "broken build".
    """,
    classifiers=[
      'Development Status :: 4 - Beta',
      'Intended Audience :: Developers',
      'Intended Audience :: Information Technology',
      'License :: OSI Approved :: Apache Software License',
      'Programming Language :: Python',
      'Topic :: Software Development :: Build Tools',
      'Topic :: Software Development :: Testing',
      'Topic :: System :: Monitoring',
      ]
    
)
